home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
kcl
/
akcl
/
akcl1615.lha
/
doc
/
format
< prev
next >
Wrap
Lisp/Scheme
|
1987-12-04
|
1KB
|
44 lines
We have added a user extensible feature to the common lisp
function format.
For some applications, for example in maxima, it is very desirable
to be able to define a new control character, so that
(format t "~%The polynomial ~m is not zero" polynomial)
would work. It is desirable to extend format itself, since then
calls to the error and other functions which use format will work
correctly. For example:
(error "~%The polynomial ~m is not zero" polynomial)
For an application to do this we would evaluate the following:
(setf (get 'si::*indent-formatted-output* (char-code #\m)) 'maxima-print)
(defun maxima-print (item stream colon atsign &rest l)
colon atsign l ;ignoring these
(internal-maxima-print item stream))
Note this extension is case sensitive, so that to have this apply to
capital M as well, the property for (char-code #\M) must be added as
well.
A call with "~:m" would make colon=1 and atsign=0.
A call with "~@m" would make colon=0 and atsign=1.
To Do:
The &rest l is currently unused, a future addition will probably
store into l the current column of the format output stream.
This also implies that new print functions should return what they think is
the new column. Since I believe that 98% of the current calls to format
do not use column information in an important way, this is probably not worth
the additional hair involved.
Numeric args are not passed.